<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>

</body>
<script>
  var a = 10;
  function fn() {
    var a = 100;
    // a = 100;
    console.log('函数内', a);
  }

  console.log('函数外', a);
  fn();
  console.log('函数外', a);
</script>
<script>
  // 1.
  // var a = 10;   // 全局变量 100
  // debugger;

  // function fn(){
  //     debugger;
  //     // 先查找函数作用域中 是否有关键词声明此变量或形式参数  有=> 局部 , 没有就向外跳一层找全局变量 
  //     // 全局作用域 包裹 函数作用域 => 函数内,在变量和方法查找过程中 先找函数内,找不到向外跳一层找全局
  //     a = 100;   // 全局
  //     console.log("函数内",a);//100
  // }
  // console.log("函数外",a); //10
  // fn();
  // console.log("函数外",a); //100



  // 2.  // 局部变量  => 只在函数内生效  不会影响全局变量
  // var a = 10;   // 全局变量 
  // // debugger;

  // function fn(){
  //     // debugger;
  //     var a = 100;   // 局部变量  => 只在函数内生效  不会影响全局变量
  //     console.log("函数内",a); // 100
  // }
  // console.log("函数外",a); // 10
  // fn();
  // console.log("函数外",a); // 10

  // 2.1        !!!!!!!!!!!!!!!!!!!
  // var a = 10;
  // function fn() {
  //     a = 100; 
  //     console.log(a);

  //     var a = 1332;
  // }
  // fn();
  // console.log(a);


  // 3. 形式参数也是 局部变量  => 只在函数内生效  不会影响全局变量
  var a = 10;   // 全局变量 
  debugger;

  function fn(a) {  //var  a = 10
    debugger;
    console.log("函数内", a); // 10
    a = 100;
    console.log("函数内", a); //100
  }
  console.log("函数外", a);  // 10
  fn(a); // fn(10)
  console.log("函数外", a); // 10


</script>

</html>